home *** CD-ROM | disk | FTP | other *** search
/ Day Cry / Day Cry CD.bin / oh_towns / ein / sources / cdpsrc.lzh / CDP / GUI.C < prev    next >
C/C++ Source or Header  |  1994-07-19  |  11KB  |  403 lines

  1. /*<Header>==============================================================
  2. *
  3. *    ébécâvâîü[âä / "GUI.C"
  4. *
  5. *        [ EIN(tm) project : âTâôâvâïâvâìâOâëâÇ ]
  6. *
  7. *    COPYRIGHT  Nam  1994, All rights reserved.
  8. *
  9. *    özòtüEægì₧üEëⁿò╧üEÅñùÿùpé╖é╫é─Ä⌐ùRüBé╜é╛é╡û│ò█Å╪é┴é╖
  10. *
  11. *-----------------------------------------------------------------------
  12. *    V1.0L01â┐    94.04.07/Nam    âvâìâgâ^âCâv
  13. *</Header>==============================================================*/
  14. #include    <stdio.h>
  15. #include    <stdlib.h>
  16. #include    <string.h>
  17. #include    <snd.h>
  18. #include    <winb.h>
  19. #include    <te.h>
  20. #include    <fntb.h>
  21. #include    <gui.h>
  22. #include    <egb.h>
  23. //#include    <file_dlg.h>
  24. //#include    <tifflib.h>
  25. #include    <msdos.cf>
  26. #include    <loader.h>
  27. #include    <math.h>
  28. #include    <io.h>
  29. #include    <guidbg.h>
  30. #include    <wgb.h>
  31. // üª é▒é▒é▄é┼é¬ò╜ï╧ôIé╔Ägùpé│éΩéΘâwâbâ_
  32. #include    <time.h>
  33. #include    <cdrfrb.h>
  34. #include    <mos.h>
  35.  
  36. #include    "..\ein\eintm.h"    // EIN(TM)è╓ÿAâëâCâuâëâèé╠âwâbâ_
  37.  
  38.  
  39. #define    ERROR    (-1)
  40.  
  41.  
  42. #define    DISPMODE_ICON    (0)
  43. #define    DISPMODE_PANEL    (1)
  44.  
  45.  
  46. #define    ID_BASE    (0)
  47.  
  48. #define    ID_MUSNO1    (2)        // î╗ì▌ï╚ö╘Åπê╩îà
  49. #define    ID_MUSNO2    (3)        // î╗ì▌ï╚ö╘ë║ê╩îà
  50. #define    ID_ANIM        (4)        // CDâAâjâüü[âVâçâô
  51.  
  52. #define    ID_PMUSMODE    (9)        // ï╚Ä₧è╘ò\Īâéü[âh
  53. #define    ID_PMUSNO1    (7)        // î╗ì▌ï╚ö╘Åπê╩îà
  54. #define    ID_PMUSNO2    (8)        // î╗ì▌ï╚ö╘ë║ê╩îà
  55. #define    ID_PMUSMAX1    (16)    // æSï╚ÉöÅπê╩îà
  56. #define    ID_PMUSMAX2    (17)    // æSï╚Éöë║ê╩îà
  57. #define    ID_PMUSTM1    (10)    // ï╚Ä₧è╘(ò¬Åπê╩îà)
  58. #define    ID_PMUSTM2    (11)    // ï╚Ä₧è╘(ò¬ë║ê╩îà)
  59. #define    ID_PMUSTM3    (13)    // ï╚Ä₧è╘(òbÅπê╩îà)
  60. #define    ID_PMUSTM4    (14)    // ï╚Ä₧è╘(òbë║ê╩îà)
  61.  
  62. #define    PT_NUM        (524)
  63. #define    PT_NON        (522)
  64. #define    PT_HFN        (523)
  65. #define    PT_E        (534)
  66. #define    PT_r        (535)
  67. #define    PT_BIG        (14)
  68. #define    PT_SMALL    (28)
  69.  
  70. #define    PT_ANIM_NON    (518)
  71. #define    PT_ANIM_MIN    (519)
  72. #define    PT_ANIM_MAX    (521)
  73.  
  74.  
  75. extern    int        ID_ICON[];
  76. extern    int        ID_PANEL[];
  77. extern    int        dispMode;    // 0:ICON / 1:PANEL
  78. extern    int        showTime;    // 0:âgâëâbâNôαëëætÄ₧è╘, 1:âfâBâXâNôαëëætÄ₧è╘, 2:
  79.  
  80. extern struct TIMEADRS    tracktime[], disctime, endtime;
  81. extern int                endtrack;
  82. extern struct TIMEADRS    trtime, dctime;        // mphaseé┼ĵô╛
  83.  
  84. extern    int        getPlayStatus();
  85.  
  86. /* 2îàé╠ÉöÆlé≡ICONé╔É▌ÆΦé╡ò\Ī */
  87. /* no:ò\Īé╡é╜éóÉöÆl(-3:"Er",-2:"--",-1:"  ", 0ü`99:ÉöÆl) */
  88. /* high:Åπê╩îàé╠òöòiID, low:ë║ê╩îàé╠òöòiid, fntNo:" "é╠iconö╘ìå, mode:1é╚éτÅπê╩îàé¬0é╠é╞é½é╔ò\Īé╡é╚éó */
  89. void    __setNumFnt( int no, int high, int low, int fntNo, int mode )
  90. {
  91.     register int    foo,bar;
  92.     
  93.     switch( no ){
  94.         // "Er"
  95.         case -3:
  96.             /* ëëætö╘ìåò\Īé≡"Er"é╔ */
  97.             MMI_SendMessage( high, MM_SETSHAPE, 1, fntNo + 12);
  98.             MMI_SendMessage( low , MM_SETSHAPE, 1, fntNo + 13);
  99.             break;
  100.         // "--"
  101.         case -2:
  102.             /* ëëætö╘ìåò\Īé≡"--"é╔ */
  103.             MMI_SendMessage( high, MM_SETSHAPE, 1, fntNo + 1);
  104.             MMI_SendMessage( low , MM_SETSHAPE, 1, fntNo + 1);
  105.             break;
  106.         // "  "
  107.         case -1:
  108.             /* ëëætö╘ìåò\Īé≡"  "é╔ */
  109.             MMI_SendMessage( high, MM_SETSHAPE, 1, fntNo );
  110.             MMI_SendMessage( low , MM_SETSHAPE, 1, fntNo );
  111.             break;
  112.         // ëëætö╘ìåò\Īé≡ìXÉV //
  113.         default:
  114.             if ( (no>99)|| (no<0) ){
  115.                 no=0;
  116.             }
  117.             foo = no / 10;
  118.             if ( (foo<1)&&(mode!=0) ){
  119.                 foo =fntNo;    // Åπê╩îàé¬0é╚éτë╜éαò\Īé╡é╚éóéµéñé╔
  120.             } else {
  121.                 foo+=fntNo+2;
  122.             }
  123.             bar = (no % 10) + fntNo + 2;
  124.             MMI_SendMessage( high, MM_SETSHAPE, 1, foo );
  125.             MMI_SendMessage( low , MM_SETSHAPE, 1, bar );
  126.             break;
  127.         }
  128.     MMI_SendMessage( high, MM_SHOW, 0 );
  129.     MMI_SendMessage( low,  MM_SHOW, 0 );
  130. }
  131.  
  132. /*===================================================================*/
  133. /*  âpâlâïÅπé╠ò\ĪìXÉV                                               */
  134. /*===================================================================*/
  135. int        update_PANEL( int force )
  136. {
  137.     static int    oldMin=-2, oldSec=-2;
  138.     static int    oldNo = -9;
  139.     int            musNo = getPlayStatus();
  140.     register int    i, foo,bar;
  141.  
  142.     // ï¡ÉºÅæè╖éª
  143.     if ( force != 0 ){
  144.         oldNo =-9;
  145.         oldMin=oldNo;
  146.         oldSec=oldNo;
  147.     }
  148.  
  149.     // ëëætÄ₧è╘é≡Åæè╖éª
  150.     switch( showTime ){
  151.         // âgâëâbâNôαëëætÄ₧è╘
  152.         case 0:
  153.             foo = trtime.min;
  154.             bar = trtime.sec;
  155.             break;
  156.         // âfâBâXâNôαëëætÄ₧è╘
  157.         case 1:
  158.             foo = dctime.min;
  159.             bar = dctime.sec;
  160.             break;
  161.         // 
  162.         default:
  163.             i = (musNo < 100) ?musNo-1: 98;
  164.             foo = tracktime[i].min;
  165.             bar = tracktime[i].sec;
  166.             break;
  167.     }
  168.     if ( oldMin != foo ){
  169.         __setNumFnt( foo, ID_PANEL[ID_PMUSTM1], ID_PANEL[ID_PMUSTM2], PT_NON+PT_SMALL, 1 );
  170.         oldMin = foo;
  171.     }
  172.     if ( oldSec != bar ){
  173.         __setNumFnt( bar, ID_PANEL[ID_PMUSTM3], ID_PANEL[ID_PMUSTM4], PT_NON+PT_SMALL, 0 );
  174.         oldSec = bar;
  175.     }
  176.  
  177.     // ï╚ö╘ìåé╠ò√é═òsùvé╚Åæè╖éªé≡é╡é╚éó
  178.     if ( oldNo == musNo ){
  179.         return NOERR;
  180.     }
  181.     oldNo = musNo;
  182.  
  183.     switch( musNo ){
  184.         // éαé╡âGâëü[é╚éτ
  185.         case -1:
  186.             // ëëætö╘ìåé≡"Er"é╔
  187.             __setNumFnt( -3, ID_PANEL[ID_PMUSNO1], ID_PANEL[ID_PMUSNO2], PT_NON+PT_BIG, 1 );
  188.             // æSï╚ö╘ìåé≡"  "é╔
  189.             __setNumFnt( -1, ID_PANEL[ID_PMUSMAX1], ID_PANEL[ID_PMUSMAX2], PT_NON, 1 );
  190.             break;
  191.         // éαé╡ÆΓÄ~Æåé╚éτ
  192.         case 0:
  193.             // ëëætö╘ìåé≡"--"é╔
  194.             __setNumFnt( -2, ID_PANEL[ID_PMUSNO1], ID_PANEL[ID_PMUSNO2], PT_NON+PT_BIG, 1 );
  195.             // æSï╚ö╘ìåé≡ìXÉV
  196.             __setNumFnt( endtrack, ID_PANEL[ID_PMUSMAX1], ID_PANEL[ID_PMUSMAX2], PT_NON, 1 );
  197.             break;
  198.         // ëëætö╘ìåò\Īé≡ìXÉV //
  199.         default:
  200.             // ëëætö╘ìå
  201.             __setNumFnt( musNo, ID_PANEL[ID_PMUSNO1], ID_PANEL[ID_PMUSNO2], PT_NON+PT_BIG, 1 );
  202.             // æSï╚ö╘ìå
  203.             __setNumFnt( endtrack, ID_PANEL[ID_PMUSMAX1], ID_PANEL[ID_PMUSMAX2], PT_NON, 1 );
  204.             break;
  205.     }
  206.     return NOERR;
  207. }
  208.  
  209. /*===================================================================*/
  210. /*  âAâCâRâôÅπé╠ò\ĪìXÉV                                             */
  211. /*===================================================================*/
  212. int        update_ICON( int force )
  213. {
  214.     static int    animNo = PT_ANIM_MIN;
  215.     static int    oldNo = -9;
  216.     int            musNo;
  217.     register int    foo,bar;
  218.  
  219.     // éαé╡ï¡ÉºÅæè╖éªé┼é╚é»éΩé╬âAâjâüü[âVâçâô
  220.     if ( force==0 && oldNo>0 ){
  221.         MMI_SendMessage( ID_ICON[ID_ANIM], MM_SETSHAPE, 1, animNo);
  222.         MMI_SendMessage( ID_ICON[ID_ANIM], MM_SHOW, 0 );
  223.         animNo++;
  224.         if ( animNo>PT_ANIM_MAX){
  225.             animNo = PT_ANIM_MIN;
  226.         }
  227.     }
  228.     /* ÆΓÄ~Æå é┼üAforth==0 é╚éτÅIù╣ */
  229.     if ( (oldNo<1) && (force==0) ){
  230.         return NOERR;
  231.     }
  232.     // 
  233.     musNo = getPlayStatus();
  234.     
  235.     // ï╚ö╘ìåé╠ò√é═òsùvé╚Åæè╖éªé≡é╡é╚éó
  236.     if ( (oldNo == musNo) && (force==0) ){
  237.         return NOERR;
  238.     }
  239.     oldNo = musNo;
  240.     
  241.     switch( musNo ){
  242.         // éαé╡âGâëü[é╚éτ
  243.         case -1:
  244.             /* ëëætö╘ìåò\Īé≡"Er"é╔ */
  245.             MMI_SendMessage( ID_ICON[ID_MUSNO1], MM_SETSHAPE, 1, PT_E);
  246.             MMI_SendMessage( ID_ICON[ID_MUSNO2], MM_SETSHAPE, 1, PT_r);
  247.             // CDâAâjâüü[âVâçâôÆΓÄ~
  248.             MMI_SendMessage( ID_ICON[ID_ANIM], MM_SETSHAPE, 1, PT_ANIM_NON);
  249.             MMI_SendMessage( ID_ICON[ID_ANIM], MM_SHOW, 0 );
  250.             break;
  251.         // éαé╡ÆΓÄ~Æåé╚éτ
  252.         case 0:
  253.             /* ëëætö╘ìåò\Īé≡"--"é╔ */
  254.             MMI_SendMessage( ID_ICON[ID_MUSNO1], MM_SETSHAPE, 1, PT_HFN);
  255.             MMI_SendMessage( ID_ICON[ID_MUSNO2], MM_SETSHAPE, 1, PT_HFN);
  256.             break;
  257.         // ëëætö╘ìåò\Īé≡ìXÉV //
  258.         default:
  259.             if ( (musNo>99)|| (musNo<1) ){
  260.                 musNo=99;
  261.             }
  262.             foo = musNo / 10;
  263.             if (foo > 0){
  264.                 foo+=PT_NUM;
  265.             } else {
  266.                 foo =PT_NON;    // Åπê╩îàé¬0é╚éτë╜éαò\Īé╡é╚éóéµéñé╔
  267.             }
  268.             bar = (musNo % 10) + PT_NUM;
  269.             MMI_SendMessage( ID_ICON[ID_MUSNO1], MM_SETSHAPE, 1, foo);
  270.             MMI_SendMessage( ID_ICON[ID_MUSNO2], MM_SETSHAPE, 1, bar);
  271.             break;
  272.     }
  273.     MMI_SendMessage( ID_ICON[ID_MUSNO1], MM_SHOW, 0 );
  274.     MMI_SendMessage( ID_ICON[ID_MUSNO2], MM_SHOW, 0 );
  275.  
  276.     return NOERR;
  277. }
  278.  
  279. /*===================================================================*/
  280. /*  ébécò\ĪìXÉV(Åπê╩è╓Éö)                                           */
  281. /*===================================================================*/
  282. int        updateCDdisp( force )
  283. {
  284.     static int    btime = 0;
  285.     register int    ntime;
  286.  
  287.     ntime = MOS_getTime();
  288.     /* æOë±é⌐éτ600msûóû₧é┼üAé⌐é┬ï¡Éºò\Īé┼é╚é»éΩé╬ÅIù╣ */
  289.     if ( (abs(ntime - btime) < 30) && (force == 0) ){
  290.         return NOERR;
  291.     }
  292.     btime = ntime;
  293.     /* ëëætÅ≤æ╘é≡ĵô╛é╡ö╘ìåò\Īé≡ìXÉV */
  294.     if ( dispMode == DISPMODE_ICON ){
  295.         update_ICON( force );
  296.     } else {
  297.         update_PANEL( force );
  298.     }
  299.     return NOERR;
  300. }
  301.  
  302. /*===================================================================*/
  303. /*  ÅIù╣(âpâlâïÅπé╠â{â^âôè╓Éö)